package it.blog.controller;

import it.blog.stub.User;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class LoginFilter implements Filter {

	private ServletContext ctx;	
	
	@Override
	public void destroy() {
		
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		
		/* Si suppone che la struttura della web app contenga una cartella private in cui ci sono le pagine
		 * accessibili solo agli utenti registrati, in modo da impedire l'accesso a tali pagine da parte di utenti senza
		 * permessi  
		 */
		HttpServletRequest request = (HttpServletRequest)arg0;
		HttpServletResponse response = (HttpServletResponse)arg1;
		
		//Carico la URL richiesta
		String requestedURL = request.getRequestURL().toString();
		
		//Carico l'utente di questa sessione
		HttpSession session = request.getSession();
		User user = (User) session.getAttribute("user");
		
		if(requestedURL.contains("private")){
			//Se non c'e' l'attributo user, qualcuno sta facendo il furbo 
			if(user==null) {
				//E allora lo rimandiamo alla pagina iniziale
				response.sendRedirect(response.encodeRedirectURL(ctx.getContextPath()+"/home.jsp"));
			}
			else{
				arg2.doFilter(arg0, arg1);
			}
		}
		else{
			arg2.doFilter(arg0, arg1);
		}
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		ctx=arg0.getServletContext();
	}

}
